package cc.wsyw126.java.nowcoder.interview;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 2017/4/23.
 * 给定两个字符串，请编写程序，确定其中一个字符串的字符重新排列后，能否变成另一个字符串。
 * 这里规定大小写为不同字符，且考虑字符串重点空格。
 * 给定一个string stringA和一个string stringB，请返回一个bool，代表两串是否重新排列后可相同。
 * 保证两串的长度都小于等于5000。
 */
public class Same {
    public boolean checkSam(String stringA, String stringB) {
        if (stringA == null || stringB == null) return false;
        if (stringA.length() == 0 || stringB.length() ==0) return false;
        if (stringA.length()!= stringB.length()) return false;
        HashMap<Character, Integer> mapA = new HashMap<>();
        HashMap<Character, Integer> mapB = new HashMap<>();

        for (int i = 0; i < stringA.length(); i++) {
            Integer integer = mapA.get(stringA.charAt(i));
            if (integer == null) {
                integer =0;
            }
            integer++;
            mapA.put(stringA.charAt(i), integer);
        }

        for (int i = 0; i < stringB.length(); i++) {
            Integer integer = mapB.get(stringB.charAt(i));
            if (integer == null) {
                integer = 0;
            }
            integer++;
            mapB.put(stringB.charAt(i), integer);
        }
        if (mapA.size() != mapB.size()) return false;
        for (Map.Entry<Character, Integer> characterIntegerEntry : mapA.entrySet()) {
            Character key = characterIntegerEntry.getKey();
            Integer value = characterIntegerEntry.getValue();
            if (value != mapB.get(key)) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        Same same = new Same();
        boolean b = same.checkSam("abc,ABC", "ABC,abc");
        System.out.println("b = " + b);
    }
}
